package cn.jetpiece.cloud.dict.app.modular.dict.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.util.Date;

/**
 * @author hancp
 * @version 1.0
 * @description: 分类字典
 * @date 2021/12/6 11:20
 */
@Data
@TableName("sys_category")
public class Category implements Serializable, Comparable<Category> {
    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @TableId(type = IdType.ASSIGN_ID)
    private Long id;
    /**
     * 父级节点
     */
    private Long pid;
    /**
     * 类型名称
     */

    private String name;
    /**
     * 类型编码
     */
    private String code;
    /**
     * 类型编码
     */
    private String thirdPartCode;
    /**
     * 创建人
     */
    @TableField(fill = FieldFill.INSERT)
    private String createBy;
    /**
     * 创建日期
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;
    /**
     * 更新人
     */
    @TableField(fill = FieldFill.UPDATE)
    private String updateBy;
    /**
     * 更新日期
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.UPDATE)
    private Date updateTime;
    /**
     * 所属部门
     */
    private String sysOrgCode;
    /**
     * 是否有子节点
     */

    private String hasChild;

    /**
     * 分类级别
     */
    private Integer categoryLevel;

    /**
     * 启用/禁用
     */
    @TableField(fill = FieldFill.INSERT)
    private Integer enableFlag;

    /**
     * 是否删除{1:删除,0未删除}
     */
    @TableField(fill = FieldFill.INSERT)
    private Integer delFlag;

    /**
     * 租户ID/项目ID
     */
    @TableField(fill = FieldFill.INSERT)
    private Long tenantId;

    /**
     * 排序
     */
    private Integer sort;

    @TableField(exist = false)
    private Long fillRuleId;


    @Override
    public int compareTo(Category o) {
        //比较条件我们定的是按照code的长度升序
        // <0：当前对象比传入对象小。
        // =0：当前对象等于传入对象。
        // >0：当前对象比传入对象大。
        int s = this.code.length() - o.code.length();
        return s;
    }

    @Override
    public String toString() {
        return "SysCategory [code=" + code + ", name=" + name + "]";
    }
}
